///*******************************************************************************
// * Copyright (c) 2000, 2007 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// * IBM Corporation - initial API and implementation
// *******************************************************************************/
//package org.eclipse.ui.tests.zoom;
//
//import junit.framework.Assert;
//
//import org.eclipse.core.resources.IFile;
//import org.eclipse.core.resources.IProject;
//import org.eclipse.core.runtime.CoreException;
//import org.eclipse.jface.preference.IPreferenceStore;
//import org.eclipse.swt.SWT;
//import org.eclipse.ui.IEditorPart;
//import org.eclipse.ui.IViewPart;
//import org.eclipse.ui.IViewReference;
//import org.eclipse.ui.IWorkbenchPart;
//import org.eclipse.ui.IWorkbenchPreferenceConstants;
//import org.eclipse.ui.PartInitException;
//import org.eclipse.ui.ide.IDE;
//import org.eclipse.ui.internal.IPreferenceConstants;
//import org.eclipse.ui.internal.PartPane;
//import org.eclipse.ui.internal.PartSite;
//import org.eclipse.ui.internal.WorkbenchPage;
//import org.eclipse.ui.internal.WorkbenchPlugin;
//import org.eclipse.ui.internal.WorkbenchWindow;
//import org.eclipse.ui.internal.util.PrefUtil;
//import org.eclipse.ui.internal.util.Util;
//import org.eclipse.ui.part.FileEditorInput;
//import org.eclipse.ui.tests.api.MockEditorPart;
//import org.eclipse.ui.tests.dnd.DragOperations;
//import org.eclipse.ui.tests.dnd.EditorAreaDropTarget;
//import org.eclipse.ui.tests.dnd.ExistingWindowProvider;
//import org.eclipse.ui.tests.harness.util.FileUtil;
//import org.eclipse.ui.tests.harness.util.UITestCase;
//
//public class ZoomTestCase extends UITestCase {
//// protected static final String view1Id = IPageLayout.ID_RES_NAV;
////
//// protected static final String view2Id = IPageLayout.ID_OUTLINE;
//
// protected WorkbenchWindow window;
//
// protected WorkbenchPage page;
//
// protected IProject project;
//
// protected IFile file1, file2;
//
// protected IEditorPart editor1, editor2, editor3;
//
// protected IViewPart stackedView1;
// protected IViewPart stackedView2;
// protected IViewPart unstackedView;
// protected IViewPart fastView;
//
// private IFile file3;
//
// // Remember the actual value of the 'useMinMax' state
// // so that 'tearDown' can restore it
// private boolean oldMinMaxState;
//
// public ZoomTestCase(String name) {
// super(name);
// }
//
// /* (non-Javadoc)
// * @see org.eclipse.ui.tests.util.UITestCase#doTearDown()
// */
// protected void doTearDown() throws Exception {
// page.testInvariants();
//
// super.doTearDown();
//
// IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
// apiStore.setValue(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX, oldMinMaxState);
// }
//
// protected void doSetUp() throws Exception {
// // These tests are hard-wired to the pre-3.3 zoom behaviour
// // Run them anyway to ensure that we preserve the 3.0 mechanism
// IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
// oldMinMaxState = apiStore.getBoolean(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX);
//
// super.doSetUp();
//
// window = (WorkbenchWindow) openTestWindow(ZoomPerspectiveFactory.PERSP_ID);
// page = (WorkbenchPage) window.getActivePage();
//
// // Disable animations since they occur concurrently and can interferre
// // with locating drop targets
// apiStore.setValue(
// IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS,
// false);
//
// // These tests are hard-wired to the pre-3.3 zoom behaviour
// // Run them anyway to ensure that we preserve the 3.0 mechanism
// oldMinMaxState = apiStore.getBoolean(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX);
//
// apiStore.setValue(IWorkbenchPreferenceConstants.ENABLE_NEW_MIN_MAX, false);
//
// try {
// project = FileUtil.createProject("IEditorPartTest"); //$NON-NLS-1$
// file1 = FileUtil.createFile("Test1.txt", project); //$NON-NLS-1$
// file2 = FileUtil.createFile("Test2.txt", project); //$NON-NLS-1$
// file3 = FileUtil.createFile("Test3.txt", project); //$NON-NLS-1$
// editor1 = page.openEditor(new FileEditorInput(file1),
// MockEditorPart.ID1);
// editor2 = page.openEditor(new FileEditorInput(file2),
// MockEditorPart.ID2);
// editor3 = page.openEditor(new FileEditorInput(file3),
// MockEditorPart.ID2);
//
// DragOperations
// .drag(editor3, new EditorAreaDropTarget(new ExistingWindowProvider(window), SWT.RIGHT), false);
// } catch (PartInitException e) {
// } catch (CoreException e) {
// }
//
// stackedView1 = findView(ZoomPerspectiveFactory.STACK1_VIEW1);
// stackedView2 = findView(ZoomPerspectiveFactory.STACK1_VIEW2);
// unstackedView = findView(ZoomPerspectiveFactory.UNSTACKED_VIEW1);
// fastView = findView(ZoomPerspectiveFactory.FASTVIEW1);
// }
//
// // zooms the given part
// protected void zoom(IWorkbenchPart part) {
// if (part == null)
// throw new NullPointerException();
// page.activate(part);
// page.toggleZoom(page.getReference(part));
// Assert.assertTrue(page.isZoomed());
// Assert.assertTrue(isZoomed(part));
// }
//
// // open the given file in an editor
// protected void openEditor(IFile file, boolean activate) {
// try {
// if (file == file1)
// editor1 = IDE.openEditor(page, file, activate);
// if (file == file2)
// editor2 = IDE.openEditor(page, file, activate);
// } catch (PartInitException e) {
// }
// }
//
// protected IViewPart findView(String id) {
// IViewPart view = page.findView(id);
// assertNotNull("View " + id + " not found", view);
// return view;
// }
//
// // show the given view as a regular view
// protected IViewPart showRegularView(String id, int mode) {
// try {
// IViewPart view = page.showView(id, null, mode);
// IViewReference ref = (IViewReference) page.getReference(view);
// if (page.isFastView(ref))
// page.removeFastView(ref);
// return view;
// } catch (PartInitException e) {
// }
// return null;
// }
//
// // show the given view
// protected IViewPart showFastView(String id) {
// try {
// IPreferenceStore store = WorkbenchPlugin.getDefault().getPreferenceStore();
//
// int oldMode = store.getInt(IPreferenceConstants.OPEN_VIEW_MODE);
// store.setValue(IPreferenceConstants.OPEN_VIEW_MODE, IPreferenceConstants.OVM_FAST);
//
// IViewPart view = page.showView(id);
// IViewReference ref = (IViewReference) page.getReference(view);
// page.addFastView(ref);
// Assert.assertTrue(page.isFastView(ref));
// store.setValue(IPreferenceConstants.OPEN_VIEW_MODE, oldMode);
// return view;
// } catch (PartInitException e) {
// }
// return null;
// }
//
// // returns whether this part is zoomed
// protected boolean isZoomed(IWorkbenchPart part) {
// PartSite site = (PartSite) part.getSite();
// PartPane pane = site.getPane();
//
// return pane.isZoomed();
// }
//
// /**
// * Asserts that the given part is zoomed. If the part is null, asserts
// * that no parts are zoomed.
// *
// * @param part
// * @since 3.1
// */
// protected void assertZoomed(IWorkbenchPart part) {
// if (part == null) {
// Assert.assertFalse("Page should not be zoomed", isZoomed());
// } else {
// // Assert that the part is zoomed
// Assert.assertTrue("Expecting " + partName(part) + " to be zoomed", isZoomed(part));
// // Assert that the page is zoomed (paranoia check)
// Assert.assertTrue("Page should be zoomed", isZoomed());
// }
// }
//
// /**
// * Asserts that the given part is active.
// *
// * @param part
// * @since 3.1
// */
// protected void assertActive(IWorkbenchPart part) {
// IWorkbenchPart activePart = page.getActivePart();
//
// // Assert that the part is active
// Assert.assertTrue("Unexpected active part: expected " + partName(part)
// + " and found " + partName(activePart), activePart == part);
//
// // If the part is an editor, assert that the editor is active
// if (part instanceof IEditorPart) {
// assertActiveEditor((IEditorPart)part);
// }
// }
//
// protected String partName(IWorkbenchPart part) {
// if (part == null) {
// return "null";
// }
//
// return Util.safeString(part.getTitle());
// }
//
// protected void assertActiveEditor(IEditorPart part) {
// IWorkbenchPart activeEditor = page.getActiveEditor();
//
// Assert.assertTrue("Unexpected active editor: expected " + partName(part)
// + " and found " + partName(activeEditor), activeEditor == part);
// }
//
// // returns true if the page is not zoomed, false otherwise
// protected boolean isZoomed() {
// return page.isZoomed();
// }
//
// public void close(IWorkbenchPart part) {
// if (part instanceof IViewPart) {
// page.hideView((IViewPart)part);
// } else if (part instanceof IEditorPart) {
// page.closeEditor((IEditorPart)part, false);
// }
// }
//}